package com.ntu.rent.common.util;

import java.io.IOException;

import javax.servlet.http.HttpServletResponse;

import org.apache.log4j.Logger;
import org.apache.struts2.ServletActionContext;


/**
 * HttpServletResponse帮助类
 * 
 * @author liufang
 * 
 */
public final class ResponseUtils
{
	public static final Logger log = Logger.getLogger(ResponseUtils.class);

	/**
	 * 发送文本。使用UTF-8编码。
	 * 
	 * @param response
	 *            HttpServletResponse
	 * @param text
	 *            发送的字符串
	 */
	public static void renderText(HttpServletResponse response, String text)
	{
		render(response, "text/plain;charset=UTF-8", text);
	}

	/**
	 * 发送json。使用UTF-8编码。
	 * 
	 * @param response
	 *            HttpServletResponse
	 * @param text
	 *            发送的字符串
	 */
	public static void renderJson(HttpServletResponse response, Object context)
	{
		String result = GsonBuilder.create().toJson(context);
		log.debug(result);
		render(response, "application/json;charset=UTF-8", result);
	}

	/**
	 * 
	 * @Description：向前台输出Json
	 * @Author: huxf
	 * @Finished:2013-5-15
	 * @param context
	 */
	public static void sendJson(Object context)
	{
		HttpServletResponse res = ServletActionContext.getResponse();
		renderJson(res, context);
	}

	/**
	 * 发送xml。使用UTF-8编码。
	 * 
	 * @param response
	 *            HttpServletResponse
	 * @param text
	 *            发送的字符串
	 */
	public static void renderXml(HttpServletResponse response, String text)
	{
		render(response, "text/xml;charset=UTF-8", text);
	}

	/**
	 * 发送内容。使用UTF-8编码。
	 * 
	 * @param response
	 * @param contentType
	 * @param text
	 */
	public static void render(HttpServletResponse response, String contentType,
			String text)
	{
		response.setContentType(contentType);
		response.setHeader("Pragma", "No-cache");
		response.setHeader("Cache-Control", "no-cache");
		response.setDateHeader("Expires", 0);
		try
		{
			response.getWriter().write(text);
		}
		catch (IOException e)
		{
			log.error(e.getMessage(), e);
		}
	}
}
